/**
 * 
 */
package algo3c2g15.vista;

import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import algo3c2g15.controlador.ControladorOpciones;
import algo3c2g15.utils.Constantes;
import algo3c2g15.utils.VistaMapa;


/**
 * @author De La
 *
 */
@SuppressWarnings("serial")
public class MenuOpciones extends JPanel {
	
	private JTextArea opciones = new JTextArea();
	private JTextArea aclaracion = new JTextArea();
	private JButton volver = new JButton("Volver");
	private JPanel principal;
	private Fondo fondo = new Fondo( Constantes.FONDO_MARRON );
	private JPanel panel = this;
	private JTextField jug1 = new JTextField();
	private JTextField jug2 = new JTextField();
	private Double[] lasOpciones = {5.0, 6.0, 7.0, 8.0};
	private JComboBox recursos = new JComboBox(lasOpciones);
	private ControladorOpciones controlador;
	private JLabel lJugador1 = new JLabel ("JUGADOR 1:");
	private JLabel lJugador2 = new JLabel ("JUGADOR 2:");
	private JLabel lRecursos = new JLabel ("Recursos Iniciales:");
	private JLabel lMapa = new JLabel ("Mapa:");
	private VistaMapa[] losMapas = {new VistaMapa(Constantes.MAPA, "Mapa 1")
								, new VistaMapa(Constantes.MAPA2, "Mapa 2")};
	private JComboBox mapas = new JComboBox(losMapas);
	
	public MenuOpciones(JPanel principal) {
		this.principal = principal;
		
		setLayout(null);		
			
		opciones.setFont(new Font("Serif", Font.PLAIN, 12));
		opciones.setBorder(
            BorderFactory.createCompoundBorder(
                BorderFactory.createCompoundBorder(
                                BorderFactory.createTitledBorder("Opciones"),
                                BorderFactory.createEmptyBorder(5,5,5,5)),
                opciones.getBorder()));
		
		lJugador1.setBounds(5,20,100,20);
		jug1.setBounds(80, 20, 110, 20);
		lJugador2.setBounds(5,50,100,20);
		jug2.setBounds(80, 50, 110, 20);
		lRecursos.setBounds(5,80,120,20);
		recursos.setBounds(140, 80, 50, 20);
		lMapa.setBounds(5,110,100,20);
		mapas.setBounds(80,110,110,20);
		
		opciones.add(lMapa);
		opciones.add(mapas);
		opciones.add(lRecursos);
		opciones.add(lJugador1);
		opciones.add(lJugador2);
		opciones.add(jug1);	
		opciones.add(jug2);
		opciones.add(recursos);		
		
		opciones.setBounds(30,20,200,250);
		opciones.setVisible(true);
		opciones.setEditable(false);
		add(opciones);		
		
		jug1.addActionListener(getListenerJugador1());
		jug2.addActionListener(getListenerJugador2());
		
		volver.setBounds(30,280,100,20);
		volver.addActionListener(this.getListenerVolver());
		add(volver);	
		
		aclaracion.setFont(new Font("Serif", Font.PLAIN, 12));
		aclaracion.setBounds(10,140,180,100);
		aclaracion.setVisible (true);
		aclaracion.setEditable(false);
		opciones.add(aclaracion);
		
		try{
			aclaracion.setText(MenuCreditos.readFileAsString( Constantes.CPU ));
		}
		catch (IOException lala){
			System.out.println("CPU.txt no encontrado!");
		}
		
	}
	
	public ActionListener getListenerVolver() {
		return new EscuchaBotonVolver();
	}
	
	private class EscuchaBotonVolver implements ActionListener
	{	public void actionPerformed(ActionEvent e)
		{
			if (!jug1.getText().equals(jug2.getText())){
				VentanaPrincipal.getInstance().setJugador1( jug1.getText() );
				VentanaPrincipal.getInstance().setJugador2( jug2.getText() );
				VentanaPrincipal.getInstance().setAlgoPesosIniciales( ((Double)recursos.getSelectedItem()).intValue() );
				VentanaPrincipal.getInstance().setMapa((VistaMapa)mapas.getSelectedItem());
				panel.setVisible(false);	
				principal.setVisible(true);
			}
			else{
				Object[] mensaje = {"No introduzca 2 jugadores con el mismo nombre"};
				JOptionPane.showMessageDialog(MenuJuego.getInstance(), mensaje, "Aviso" , JOptionPane.ERROR_MESSAGE);
			}
		}
	}
	
	public ActionListener getListenerJugador1() {
		return new EscuchaJugador1();
	}
	
	private class EscuchaJugador1 implements ActionListener
	{	public void actionPerformed(ActionEvent e)
		{
		controlador.setJugador1(jug1.getText());			
		}
	}
	
	public ActionListener getListenerJugador2() {
		return new EscuchaJugador2();
	}
	
	private class EscuchaJugador2 implements ActionListener
	{	public void actionPerformed(ActionEvent e)
		{
		controlador.setJugador2(jug2.getText());			
		}
	}
	
	@Override
	protected void paintComponent(Graphics g) {
		super.paintComponent(g);
		fondo.paintComponent(g,getWidth(),getHeight());
	}

	public void cargarDatos() {
		if ( VentanaPrincipal.getInstance() != null ) {
			jug1.setText(VentanaPrincipal.getInstance().getJugador1());
			jug2.setText(VentanaPrincipal.getInstance().getJugador2());	
			recursos.setSelectedItem(VentanaPrincipal.getInstance().getAlgoPesosIniciales());
			mapas.setSelectedItem(VentanaPrincipal.getInstance().getMapa());
		}
	}

}
